def bubble_sort(arr):
    """
    冒泡排序函数
    参数:
        arr: 需要排序的列表
    返回:
        排序后的列表
    """
    n = len(arr)
    # 外层循环控制需要比较的轮数
    for i in range(n):
        # 设置一个标志，如果这一轮没有发生交换，说明已经有序
        swapped = False
        
        # 内层循环进行相邻元素比较和交换
        # 每一轮结束后，最大的数会"浮"到最后，所以下一轮可以少比较一个数
        for j in range(0, n - i - 1):
            # 如果前面的数比后面的大，则交换它们的位置
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                swapped = True
        
        # 如果这一轮没有发生交换，说明数组已经有序，可以提前退出
        if not swapped:
            break
    
    return arr

# 测试代码
if __name__ == "__main__":
    # 创建一个测试列表
    test_list = [64, 34, 25, 12, 22, 11, 90]
    print("原始列表:", test_list)
    
    # 调用冒泡排序函数
    sorted_list = bubble_sort(test_list)
    print("排序后的列表:", sorted_list) 